package com.example.myapplicationwork;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;

import com.example.myapplicationwork.viewmodel.AuthViewModel;
import com.example.myapplicationwork.utils.SharedPreferencesUtil;

/**
 * 启动页面
 * 用于展示应用Logo和执行自动登录操作
 */
public class SplashActivity extends AppCompatActivity {
    private static final String TAG = "SplashActivity";
    private static final long SPLASH_DELAY = 1500; // 1.5秒
    
    private AuthViewModel authViewModel;
    private TextView tvStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        
        // 初始化控件
        tvStatus = findViewById(R.id.tv_status);
        
        // 初始化ViewModel
        authViewModel = new ViewModelProvider(this).get(AuthViewModel.class);
        
        // 设置观察者
        setupObservers();
        
        // 检查是否需要自动登录
        checkAutoLogin();
    }
    
    /**
     * 设置LiveData观察者
     */
    private void setupObservers() {
        // 观察加载状态
        authViewModel.isLoading.observe(this, isLoading -> {
            Log.d(TAG, "自动登录状态: " + isLoading);
        });
        
        // 观察消息
        authViewModel.message.observe(this, message -> {
            if (message != null && !message.isEmpty()) {
                tvStatus.setText(message);
                Log.d(TAG, "自动登录消息: " + message);
            }
        });
        
        // 观察自动登录成功状态
        authViewModel.isAutoLoginSuccess.observe(this, isSuccess -> {
            if (isSuccess) {
                // 自动登录成功，跳转到首页
                navigateToHome();
            } else if (authViewModel.isLoading.getValue() != null && !authViewModel.isLoading.getValue()) {
                // 自动登录失败或不需要自动登录，跳转到登录页
                navigateToLogin();
            }
        });
    }
    
    /**
     * 检查是否需要自动登录
     */
    private void checkAutoLogin() {
        // 如果用户已经勾选了自动登录且有登录记录
        if (authViewModel.canAutoLogin()) {
            // 设置状态消息
            tvStatus.setText("正在自动登录...");
            
            // 执行自动登录
            authViewModel.autoLogin();
        } else {
            // 不需要自动登录，延迟跳转到登录页
            new android.os.Handler().postDelayed(() -> {
                navigateToLogin();
            }, SPLASH_DELAY);
        }
    }
    
    /**
     * 跳转到首页
     */
    private void navigateToHome() {
        Intent intent = new Intent(SplashActivity.this, HomeActivity.class);        intent.putExtra("username", authViewModel.userName.getValue());        intent.putExtra("userId", authViewModel.getCurrentUserId());        startActivity(intent);        finish();
    }
    
    /**
     * 跳转到登录页
     */
    private void navigateToLogin() {
        Intent intent = new Intent(SplashActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}